package org.dromara.web.CssUtil.payUtil;

import com.alibaba.fastjson.JSONObject;
import org.dromara.web.CssUtil.payUtil.bean.OpenAccountInExtendInfo;

import java.util.ArrayList;
import java.util.List;

public class OpenAccountIn extends BaseIn {
    private String cleanType;

    /**
     * 开户行 行号 对公
     */
    private String interBankNo;

    private String outAcntNm;

    private String mobile;

    private String outAcntNo;

    private Integer allocateScale;

    /**
     * 证件类型
     * 对私：0身份证 1 非身份证
     * 对公：1营业执照
     */
    private String certTp;

    /**
     * 对公：社会信用代码
     * 对私：身份证号码
     */
    private String certNo;

    /**
     * 协议类型
     */
    private String protocolType;

    private String mchntCdUserId;

    private String checkType;

    private String miniAppReturnPath;

    private String channel;

    private String organizationType;

    /**
     * 基本账户开户许可核准号
     */
    private String bcpNo;
    /**
     * 营业执照有效期起始时间
     */
    private String busiLicValidateStart;

    /**
     * 营业执照有效期结束时间
     */
    private String busiLicValidateEnd;

    /**
     * 营业执照注册地址
     */
    private String busiLicAddr;

    /**
     * 营业执照照片
     */
    private String busiLicPic;

    /**
     * 法人姓名
     */
    private String legalName;

    /**
     * 法人手机号
     */
    private String legalMobile;

    /**
     * 法人证件类型
     */
    private String legalCertTp;

    /**
     * 法人证件号
     */
    private String legalCertNo;

    /**
     * 法人证件有效期起始日
     */
    private String legalValidateStart;

    /**
     * 法人证件有效期到期日
     */
    private String legalValidateEnd;
    /**
     * 法人证件照片正面
     */
    private String legalImagF;

    /**
     * 法人证件照片反面
     */
    private String legalImagB;

    /**
     * 联系人姓名
     */
    private String contactName;
    /**
     * 联系人邮箱
     */
    private String contactEmail;
    /**
     * 联系人身份证号
     */
    private String contactCertNo;

    /**
     * 【银行账号类型】：01企业对公户；02法人对私卡；非必传，不传默认01企业对公户
     * 当银行账号类型为02法人对私卡，【法人姓名】【法人手机号】【法人证件类型】【法人证件号】必传
     */
    private String outAcntNoType;

    private OpenAccountInExtendInfo extendInfo;

    @Override
    public String generateClearText() {
        List<String> excludeFieldList = new ArrayList<>();
        excludeFieldList.add("signature");
        excludeFieldList.add("outAcntNoType");
        excludeFieldList.add("miniAppReturnPath");
        excludeFieldList.add("extendInfo");
        String sign = ClearTextUtil.generateClearText(this, excludeFieldList);
        if (extendInfo != null) {
            // 转json忽略所有 空的
            String accountInlistJson = JSONObject.toJSONString(extendInfo);
            sign = sign + "&extendInfo=" + accountInlistJson;
        }
        return sign;
    }



    public String getCleanType() {
        return cleanType;
    }

    public void setCleanType(String cleanType) {
        this.cleanType = cleanType;
    }

    public String getInterBankNo() {
        return interBankNo;
    }

    public void setInterBankNo(String interBankNo) {
        this.interBankNo = interBankNo;
    }

    public String getOutAcntNm() {
        return outAcntNm;
    }

    public void setOutAcntNm(String outAcntNm) {
        this.outAcntNm = outAcntNm;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getOutAcntNo() {
        return outAcntNo;
    }

    public void setOutAcntNo(String outAcntNo) {
        this.outAcntNo = outAcntNo;
    }

    public Integer getAllocateScale() {
        return allocateScale;
    }

    public void setAllocateScale(Integer allocateScale) {
        this.allocateScale = allocateScale;
    }

    public String getCertTp() {
        return certTp;
    }

    public void setCertTp(String certTp) {
        this.certTp = certTp;
    }

    public String getCertNo() {
        return certNo;
    }

    public void setCertNo(String certNo) {
        this.certNo = certNo;
    }

    public String getProtocolType() {
        return protocolType;
    }

    public void setProtocolType(String protocolType) {
        this.protocolType = protocolType;
    }

    public String getMchntCdUserId() {
        return mchntCdUserId;
    }

    public void setMchntCdUserId(String mchntCdUserId) {
        this.mchntCdUserId = mchntCdUserId;
    }

    public String getCheckType() {
        return checkType;
    }

    public void setCheckType(String checkType) {
        this.checkType = checkType;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getOrganizationType() {
        return organizationType;
    }

    public void setOrganizationType(String organizationType) {
        this.organizationType = organizationType;
    }

    public String getBcpNo() {
        return bcpNo;
    }

    public void setBcpNo(String bcpNo) {
        this.bcpNo = bcpNo;
    }

    public String getBusiLicValidateStart() {
        return busiLicValidateStart;
    }

    public void setBusiLicValidateStart(String busiLicValidateStart) {
        this.busiLicValidateStart = busiLicValidateStart;
    }

    public String getBusiLicValidateEnd() {
        return busiLicValidateEnd;
    }

    public void setBusiLicValidateEnd(String busiLicValidateEnd) {
        this.busiLicValidateEnd = busiLicValidateEnd;
    }

    public String getBusiLicAddr() {
        return busiLicAddr;
    }

    public void setBusiLicAddr(String busiLicAddr) {
        this.busiLicAddr = busiLicAddr;
    }

    public String getBusiLicPic() {
        return busiLicPic;
    }

    public void setBusiLicPic(String busiLicPic) {
        this.busiLicPic = busiLicPic;
    }

    public String getLegalName() {
        return legalName;
    }

    public void setLegalName(String legalName) {
        this.legalName = legalName;
    }

    public String getLegalMobile() {
        return legalMobile;
    }

    public void setLegalMobile(String legalMobile) {
        this.legalMobile = legalMobile;
    }

    public String getLegalCertTp() {
        return legalCertTp;
    }

    public void setLegalCertTp(String legalCertTp) {
        this.legalCertTp = legalCertTp;
    }

    public String getLegalCertNo() {
        return legalCertNo;
    }

    public void setLegalCertNo(String legalCertNo) {
        this.legalCertNo = legalCertNo;
    }

    public String getLegalValidateStart() {
        return legalValidateStart;
    }

    public void setLegalValidateStart(String legalValidateStart) {
        this.legalValidateStart = legalValidateStart;
    }

    public String getLegalValidateEnd() {
        return legalValidateEnd;
    }

    public void setLegalValidateEnd(String legalValidateEnd) {
        this.legalValidateEnd = legalValidateEnd;
    }

    public String getLegalImagF() {
        return legalImagF;
    }

    public void setLegalImagF(String legalImagF) {
        this.legalImagF = legalImagF;
    }

    public String getLegalImagB() {
        return legalImagB;
    }

    public void setLegalImagB(String legalImagB) {
        this.legalImagB = legalImagB;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public String getContactCertNo() {
        return contactCertNo;
    }

    public void setContactCertNo(String contactCertNo) {
        this.contactCertNo = contactCertNo;
    }

    public String getOutAcntNoType() {
        return outAcntNoType;
    }

    public void setOutAcntNoType(String outAcntNoType) {
        this.outAcntNoType = outAcntNoType;
    }

    public OpenAccountInExtendInfo getExtendInfo() {
        return extendInfo;
    }

    public void setExtendInfo(OpenAccountInExtendInfo extendInfo) {
        this.extendInfo = extendInfo;
    }

    public String getMiniAppReturnPath() {
        return miniAppReturnPath;
    }

    public void setMiniAppReturnPath(String miniAppReturnPath) {
        this.miniAppReturnPath = miniAppReturnPath;
    }
}
